package cn.fl.risknew.service;

import java.util.List;
import java.util.Map;
import cmm.mid.core.framework.page.DataResultVO;
import cmm.mid.core.framework.page.KeyValueVO;
import cmm.mid.core.framework.page.Pager;
import cn.fl.overdue.condition.OverdueBaseCondition;
import cn.fl.overdue.condition.OverdueContractQueryCondition;
import cn.fl.overdue.condition.OverduePaySchQueryCondition;
import cn.fl.project.vo.PrjPrdPaySchMVO;
import cn.fl.ref.fribaseinfo.vo.FriBaseInfoVO;
import cn.fl.risknew.vo.OverdueContractVO;
import cn.fl.risknew.vo.OverdueCstVO;
import cn.fl.risknew.vo.OverduePaySchVO;
import fl.flow.facade.flow.dto.FlowStartParamsDTO;

/**
 * 作者:hongyanbo
 * 时间:2018/8/20
 */
public interface IRiskOverdueService {
    /**
     * 查询第三方机构
     * @return
     */
    List<FriBaseInfoVO> getFriBaseInfoList();

    /**
     * 查询逾期合同
     * @param condition
     * @return
     */
    List<OverdueContractVO> getOverdueContractList(OverdueContractQueryCondition condition);

    /**
     * 查询逾期合同
     * @param condition
     * @return
     */
    List<OverduePaySchVO> getOverduePaySchList(OverduePaySchQueryCondition condition);

    /**
     * 客户逾期资金列表
     * @param cstId
     * @return <OverdueCapFundVO>
     */
    Pager cstOverdueCapFundListPage(Pager pager);


    /**
     * 查询逾期支付表明细S01
     * @param pager
     * @return
     */
    public Pager selectOverduePaySchDS01ListPage(Pager pager);
    /**
     * 查询支付表明细S01及FEE
     * @param pager
     * @param tableNm
     * @return
     */
    public Pager selectOverduePaySchDS01AndFEEListPage(Pager pager,String tableNm);
    /**
     * 查询实付详情信息
     * @param pager
     * @return
     */
    public Pager selectOverdueFundVfDtlListPage(Pager pager);

    /**
     * 获取逾期用户列表
     * @param condition
     * @param page
     * @param pagesize
     * @return
     */
    Pager getOverdueCustomerListPage(OverdueBaseCondition condition, int page, int pagesize);

    /**
     * 根据条件初始化 逾期催收-我的任务数据
     * @param pager
     * @return
     */
    Pager initMyTaskPage(Pager pager);
    /**
     * 查询某支付表提前结清信息
     * @param paySchId
     * @param tableNm
     * @param ovdAmt 逾期金额
     * @param fineAmt 罚息金额
     * @return
     */
    @Deprecated
    public Map<String,Object> getfinalPayAmt(Long paySchId,String tableNm,Long ovdAmt,Long fineAmt);

    /**
     * 逾期催收列表导出
     * @param pager
     * @return
     */
    DataResultVO exportOverdueExcel(OverdueBaseCondition pager);

    /**
     * 我的任务列表导出
     * @param condition
     * @return
     */
    DataResultVO exportMyTaskExcel(OverdueBaseCondition condition);
    /**
     * 获取任务配置逾期用户列表
     * @param condition
     * @param page
     * @param pagesize
     * @return
     */
    Pager getTaskOverdueCustomerListPage(OverdueBaseCondition condition, int page, int pagesize);

    /**
     * 逾期催收列表总数统计
     * @param condition
     * @return
     */
    OverdueCstVO getSum(OverdueBaseCondition condition);

    /**
     * 我的任务 总数统计
     * @param condition
     * @return
     */
    OverdueCstVO getMyTaskSum(OverdueBaseCondition condition);

    /**
     * 获取流程发起对象 传到service层调用flowApiService.noTransFlowStart方法发起流程
     * @param orgCd 业务数据所属客户经理组织架构
     * @param buOrgCd 业务数据所属事业部
     * @param modelTypCd 流程业务分类(FS01 File Supply 文件补充)
     * @param rskFileId 流程业务数据ID
     * @param tabNm 业务数据表名
     * @return
     */
    FlowStartParamsDTO getFlowStartParamsDTO(String orgCd, String buOrgCd, String modelTypCd, Long rskFileId, String tabNm);

    /**
     * 组任务-分页查询
     * @param condition
     * @param page
     * @param pagesize
     * @return
     */
	Pager selectGroupTaskListPage(OverdueBaseCondition condition, int page, int pagesize);

    /**
     * 获取机构
     * @return
     */
    List<KeyValueVO> getInsCdKeyValueList();

}
